package com.dingwen.treasure.tkmybatis.service.base;

import java.io.Serializable;
import java.util.List;

/**
 * 　BaseService： TODO 完善
 * 　@author dingwen
 * 　@date 2022/7/4
 *
 */
public interface BaseService<T> {

    /* --------------------------------------------查询--------------------------------------------*/

    /**
     * 根据实体查询条件获取列表
     *
     * @param t 实体查询条件
     * @return {@link List}<{@link T}>
     */
    List<T> getList(T t);

    /**
     * 查询全部返回列表
     *
     * @return {@link List}<{@link T}>
     */
    List<T> getAll();

    /**
     * 按id获取
     *
     * @param id 主键
     * @return {@link T}
     */
    T getById(Serializable id);


    /**
     * 按ID获取
     * 按ID集合获取
     *
     * @param ids ids
     * @return {@link List}<{@link T}>
     */
    List<T> getByIds(List<Serializable> ids);



    /**
     * 根据id查询是否存在
     *
     * @param id 主键
     * @return boolean
     */
    boolean existById(Serializable id);


    /* --------------------------------------------删除--------------------------------------------*/


    /**
     * 按id删除
     *
     * @param id 主键
     * @return boolean
     */
    boolean removeById(Serializable id);

    /**
     * 根据ID集合删除
     *
     * @param ids ids
     * @return boolean
     */
    boolean removeByIds(List<Serializable> ids);


    /* --------------------------------------------编辑--------------------------------------------*/


    /**
     * 可选编辑(动态参数)
     *
     * @param t 实体查询条件
     * @return
     */
    boolean modify(T t);


    /* --------------------------------------------添加--------------------------------------------*/


    /**
     * 可选新增(动态参数) 自增id已配置回写
     *
     * @param t 实体查询条件
     * @return
     */
    T add(T t);
}
